﻿using System;
using System.Collections;
using System.Linq;
using System.Web;
using System.Data;

/// <summary>
/// Summary description for ModeloDirector
/// </summary>
public class ModeloDirector
{
    MySqlClase clsMysql;
    string[] rango = new string[2];

	public ModeloDirector()
	{
        clsMysql = new MySqlClase();
	}

    public bool actualizarNombre(string Nombre,string idlog)
    {
        //DD
        string query = "UPDATE login SET username= '"+Nombre+"' WHERE idlogin = "+idlog+"";


        //func
        if (clsMysql.AbrirConexion()) { 
            if(clsMysql.EjecutarSql(query)){
                clsMysql.CerrarConexion();
                return true;
            }
        }
        clsMysql.CerrarConexion();
        return false;

    }


    public bool actualizarPwd(string pwdActual,string pwdNueva,string idl)
    {
        //DD
        string query = "UPDATE login SET pasword= '"+pwdNueva+"' WHERE idlogin = "+idl+"";

        //func
        if (existePwd(pwdActual,idl)) {
            if (clsMysql.AbrirConexion())
            {
                if (clsMysql.EjecutarSql(query))
                {
                    clsMysql.CerrarConexion();
                    return true;
                }
            }
        }
        clsMysql.CerrarConexion();
        return false;
    }

    private bool existePwd(string nvaPwd,string id)
    {
        //DD
        string query = "SELECT pasword FROM login WHERE idlogin = "+id+"";
        string pwdActual="";

        //func
        if (clsMysql.AbrirConexion()) {
            if (clsMysql.Consultar(query)) {
                while (clsMysql.DatosConsulta.Read()) {
                    pwdActual = clsMysql.DatosConsulta.GetString(0);
                }
                if (pwdActual == nvaPwd) {
                    clsMysql.CerrarConexion();
                    return true;
                }
            }
        }
        clsMysql.CerrarConexion();
        return false;
    }

    public string reporteNoCheckIn()
    {
        //DD
        string profesores="";
        string grupo = "";
        string hora = "";
        string materia = "";
        //Consulta SQL
        string query = @"
SELECT p.profesor, h.grupo, h.hora, a.asignaturas 
FROM horario h, profesores p, asignaturas a

where h.dia=(MOD(DAYOFWEEK(CURRENT_DATE())+5,7)+1)
and h.idhorario not in(select c.idhorario from checado c where c.fecha = CURRENT_DATE())
and h.id_prof = p.idprof and h.id_asig = a.idasignaturas
ORDER BY h.grupo, h.hora";
        string despliega = "";
        //Encabezado
        despliega += "<table border=\"1\" bordercolor=\"#FFCC00\" style=\"background-color:#FFFFCC; width:871px\">";
        despliega += "<tr>";
        despliega += "<td>";
        despliega += "<b style=\"font-family: Arial, Helvetica, sans-serif; font-size: 16px\">Profesor</b>";
        despliega += "</td>";
        despliega += "<td>";
        despliega += "<b style=\"font-family: Arial, Helvetica, sans-serif; font-size: 16px\">Grupo</b>";
        despliega += "</td>";
        despliega += "<td>";
        despliega += "<b style=\"font-family: Arial, Helvetica, sans-serif; font-size: 16px\">Hora</b>";
        despliega += "</td>";
        despliega += "<td>";
        despliega += "<b style=\"font-family: Arial, Helvetica, sans-serif; font-size: 16px\">Asignatura</b>";
        despliega += "</td>";
        despliega += "</tr>";



        //Funcion

        if (clsMysql.AbrirConexion())
        {
            if (clsMysql.Consultar(query))
            {
                while (clsMysql.DatosConsulta.Read())
                {
                    profesores = clsMysql.DatosConsulta[0].ToString();
                    grupo = clsMysql.DatosConsulta[1].ToString();
                    hora = clsMysql.DatosConsulta[2].ToString();
                    materia = clsMysql.DatosConsulta[3].ToString();
                                                            
                    //Leer variables
                 
                    //CONTENIDO
                    despliega += "<tr>";
                    //Profesor
                    despliega += "<td>";
                            despliega += "" + profesores + "";
                    despliega += "</td>";
                    //Grupo
                    despliega += "<td>";
                            despliega += "" + grupo + "";
                    despliega += "</td>";
                    //Hora
                    despliega += "<td>";
                            despliega += "" + PDFExport.horaClases(Convert.ToInt32(hora)) + "";
                    despliega += "</td>";
                    //Materia
                    despliega += "<td>";
                            despliega += "" + materia + "";
                    despliega += "</td>";

                    despliega += "</tr>";
                    
                }
            }
            clsMysql.CerrarConexion();

        }
        //FIN CONTENIDO
        despliega += "</table>";
        return despliega;
    }

    /// <summary>
    /// retorna la lista de los maestros que no checaron
    /// </summary>
    /// <returns></returns>
    public ArrayList listaProf()
    {
        RepProfesor rP = null;
        ArrayList arr = new ArrayList();
        
        string query = @"SELECT p.profesor, h.grupo, h.hora, a.asignaturas FROM horario h, profesores p, asignaturas a
where h.dia=(MOD(DAYOFWEEK(CURRENT_DATE())+5,7)+1)
and h.idhorario not in(select c.idhorario from checado c where c.fecha = CURRENT_DATE())
and h.id_prof = p.idprof and h.id_asig = a.idasignaturas
ORDER BY h.grupo, h.hora";
        if (clsMysql.AbrirConexion())
        {
            if (clsMysql.Consultar(query))
            {
                while (clsMysql.DatosConsulta.Read())
                {
                    rP = new RepProfesor();
                    rP.Profesor = clsMysql.DatosConsulta[0].ToString();
                    rP.Grupo = clsMysql.DatosConsulta[1].ToString();
                    rP.Hora = Convert.ToInt32(clsMysql.DatosConsulta[2]);
                    rP.Asignatura = clsMysql.DatosConsulta[3].ToString();

                    //Leer variables
                    arr.Add(rP);
                }
            }
            clsMysql.CerrarConexion();
        }
        return arr;
    }


    private void formatFecha()
    {
        //dd
        string[] fecha = new string[3];
        //Func
        for (int x = 0; x < this.rango.Length; x++) {
            
            fecha = rango[x].Split('/');
            fecha[2] = fecha[2].Substring(0, 4);
            rango[x] = string.Format("{0}-{1}-{2}",fecha[2],fecha[1],fecha[0]);
        }

    }

    private void rangoSemana()
    {
        string diaSem = this.diaSemana();
        string query = "";


        switch (diaSem)
        {
            case "1": query = "SELECT date_add(curdate(), interval 1 DAY), date_add(curdate(), interval 7 DAY)";
                break;

            case "2": query = "SELECT date_add(curdate(), interval 0 DAY), date_add(curdate(), interval 6 DAY)";
                break;

            case "3": query = "SELECT date_add(curdate(), interval -1 DAY), date_add(curdate(), interval 5 DAY)";
                break;

            case "4": query = "SELECT date_add(curdate(), interval -2 DAY), date_add(curdate(), interval 4 DAY)";
                break;

            case "5": query = "SELECT date_add(curdate(), interval -3 DAY), date_add(curdate(), interval 3 DAY)";
                break;

            case "6": query = "SELECT date_add(curdate(), interval -4 DAY), date_add(curdate(), interval 2 DAY)";
                break;

            case "7": query = "SELECT date_add(curdate(), interval -5 DAY), date_add(curdate(), interval 1 DAY)";
                break;
        }


        if (clsMysql.AbrirConexion())
        {
            if (clsMysql.Consultar(query))
            {
                while (clsMysql.DatosConsulta.Read())
                {
                    this.rango[0] = clsMysql.DatosConsulta[0].ToString();
                    this.rango[1] = clsMysql.DatosConsulta[1].ToString();
                }
            }
        }
        clsMysql.CerrarConexion();
    }

    private string diaSemana()
    { 
        //dd
        string query = "SELECT DAYOFWEEK(CURDATE()) + 1;";
        string diaSem = "";

        //func
        if (clsMysql.AbrirConexion()) {
            if (clsMysql.Consultar(query)) {
                while (clsMysql.DatosConsulta.Read()) {
                    diaSem = clsMysql.DatosConsulta[0].ToString();
                }
            }
        }
        clsMysql.CerrarConexion();
        return diaSem;
    
    }
    

}